package com.lushixiang.facade;

import com.lushixiang.dto.request.UserRegistDto;
import com.lushixiang.dto.request.UserSignInDTO;
import com.lushixiang.dto.response.AllUserResDto;

import com.lushixiang.dto.response.UserInfoDto;
import org.springframework.web.bind.annotation.*;
import com.lushixiang.base.*;
import org.springframework.web.multipart.MultipartFile;

import java.util.Map;

/*
* 处理user领域相关请求
 */

@RestController
public interface UserFacade {
    @RequestMapping("/")
    String index();

    // 用户申请邮箱验证码发送
    @RequestMapping("/signUp/applyEmailAddrCheck")
    BaseResponse<String> sentUserCode(@RequestBody Map<String,String> req);

    // 用户申请查询所有用户信息，debug
    @RequestMapping("/user/allUser")
    BaseResponse<AllUserResDto> getUserTableAll();

    // 用户提交验证码及相关信息进行用户注册
    @RequestMapping("/signUp/commit")
    BaseResponse<String> signUp(@RequestBody UserRegistDto dto);

    // 用户提交验证码及相关信息进行用户密码修改
    @RequestMapping("/signUp/resetPassword")
    BaseResponse<String> restPasswordByEmailCheck(@RequestBody UserRegistDto dto);

    // 用户提交账号密码进行登录 增加返回用户头像和ID
    @RequestMapping("/signIn")
    BaseResponse<Map<String,String>> signIn(@RequestBody UserSignInDTO userSignInDTO);

    // 用户申请重置密码
    @RequestMapping("/applyResetPassword")
    BaseResponse<String> applyResetPassword(@RequestParam(value = "emailAddr") String emailAddr);

    // 用户进行重置密码验证
    @RequestMapping("/resetPassword")
    BaseResponse<String> resetPassword(@RequestHeader("token") String token, @RequestParam("emailAddr") String emailAddr, @RequestParam("password") String password);

    // 查询单个用户详细信息
    @RequestMapping("/user/queryUserInfo")
    BaseResponse<UserInfoDto> queryUserInfo(@RequestParam String emailAddr);

    // 修改和设置用户名和用户头像
    @RequestMapping("/user/modifyIcon")
    BaseResponse<String> modifyIcon(@RequestParam("files") MultipartFile file,@RequestParam("emailAddr") String emailAddr, @RequestHeader("token") String token);

    // 用户注销
    @RequestMapping("/user/deregistration")
    BaseResponse<String> deregistration(@RequestBody UserRegistDto dto);

}
